/* Integration points (quadratures)
   Jan Stebel
*/

#ifndef _QUADBUBBLEPOINT_H__
#define _QUADBUBBLEPOINT_H__

#include "intpoint.h"


/** Quadratic+ bubble interpolation */
template<unsigned int dim>
class QuadBubblePoint : public IntPoint<dim>
{
protected:
	using IntPoint<dim>::imesh;
	using IntPoint<dim>::x;
	using IntPoint<dim>::x_a;
	bool isLinear() { return false; };

public:
	QuadBubblePoint() {};
	QuadBubblePoint(Mesh *mesh, const Quadrature<dim> *q) { IntPoint<dim>::init(mesh, q, (dim+1)*(1+dim/2)+1); };
	void setGSF();
	void setSF();
	void setX(int elem, eval_t E);
	int mapDof(int e, int n); // map local to global index
	int mapDof(int elem, int dof, int iParent);
	int getMeshNdof() { return imesh->getNnodes()+imesh->getNvolumes()+imesh->getNfaces(); };
};








#endif
